# 【一】css选择器语法
# css 添加表达式是一样的


from bs4 import BeautifulSoup

soup = BeautifulSoup(open("html_doc_02.html", "r").read(), "lxml")

# 【二】方法一：select 查找所有符合的标签
# print(soup.select())
# 【1】获取到 title 标签
'''
print(soup.find_all("title"))
print(soup.select("title"))
'''
# 【2】找到所有的 a 标签 但是 只要第三个 a 标签
'''
print(soup.find_all("a")[2])
print(soup.select("a:nth-child(4)"))
print(soup.select("a:nth-of-type(3)"))
'''
# 【3】查找某个标签下的所有子元素
'''
print(soup.select("body a"))
print(soup.select("html body a"))
'''

# 【4】当前标签下的所有直系子标签
# print(soup.select("p &gt; a"))

# 【5】当前标签的相邻标签元素
# print(soup.select("p ~ div"))

# 【6】按照class 和 id 查找
'''
print(soup.select(".list"))
print(soup.select("#link2"))
'''

# 【7】属性选择器语法
# print(soup.select("[class]"))
# print(soup.select("[class='title']"))
# print(soup.select("p[class='title']"))

# 【8】一次性放多个属性
# print(soup.select("#link1, #link2"))
# print(soup.select("#list-1 &gt; li"))
# print(soup.select("#list-1 &gt; li"))

# 【三】方法二：select_one查找单独一个标签
# print(soup.select_one("#list-1 &gt; li"))

# 【四】获取到标签的属性或者文本内容
# 【1】获取标签的属性
for li in soup.select("#list-1 &gt; li"):
    print(li.attrs)
    print(li.get_text())
    print(li.text)
    print(li.string)
